import axios from 'axios'
import Nprogress from 'nprogress'
import 'nprogress/nprogress.css'
import store from '@/store'
// 封装axios，必须创建一个新的axios实例去封装
const service = axios.create({
  baseURL: '/api',
  timeout: 20000,
});

service.interceptors.request.use(
  // 请求拦截器成功的回调
  (config) => {
    Nprogress.start()

    // 携带我们的临时标识
    let userTempId = store.state.user.userTempId
    if (userTempId) {
      config.headers.userTempId = userTempId
    }

    // 携带token 其实就是我们的正式的标识

    let token = store.state.user.token
    if (token) {
      config.headers.token = token
    }

    return config
  },
);

service.interceptors.response.use(
  (response) => {
    Nprogress.done()
    return response.data // 返回的响应不再需要从data属性当中拿数据，而是响应就是我们要的数据
  },
  (error) => {
    Nprogress.done()
    // 统一处理请求错误, 具体请求也可以选择处理或不处理
    alert('axios请求失败' + error.message)
    return new Promise(() => {})
  }
)

export default service